#define BLINKER_WIFI  //用于指定设备接入方式 wifi 接入

#include <Blinker.h>

char auth[] = "774c60aac10f"; //上一步中在app中获取到的Secret Key（新建设备的秘钥）

char ssid[] = "ZFQ"; //你的WiFi热点名称

char pswd[] = "123456789"; //你的WiFi密码


/*新建组件对象 ，组件类型 + 对象名(键名)
 *BlinkerSlider  滑块组件
  BlinkerRGB     颜色拾取组件
  BlinkerNumber  数值组件
  BlinkerText    文本组件

  普通按键
  每次按下发送的指令为  {"btn-abc":"tap"}
  开关按键
  按键本身会保存开关状态，默认为off，按下时会发送  {"btn-abc":"on"}
  保存的状态为on时，按下会发送  {"btn-abc":"off"}
  设备端可以发送指令改变当前按键的开关状态  
  自定义
  可以自定义按下按键发送的指令内容，如{"btn-abc":"自定义的内容"}
  当用户按下按键时，这些指令会发到该设备上，设备上运行的blinker支持库可以解析这些指令，并执行开发者自定义的动作。
*/
BlinkerButton Button1("btn-abc"); //btn-abc 名称要和app新建组件一致


// 按下按键即会执行该函数 回调函数

void button1_callback(const String & state) {
     
     BLINKER_LOG("get button state: ", state);
    
     if (state=="on") {

        digitalWrite(LED_BUILTIN, LOW);

        // 反馈开关状态
        
        Button1.print("on");

    } else if(state=="off"){

        digitalWrite(LED_BUILTIN, HIGH);

        // 反馈开关状态

        Button1.print("off");
    }

}
 

void setup() {

    // 初始化串口，并开启调试信息

    Serial.begin(115200);    

    BLINKER_DEBUG.stream(Serial); //串口打印调试信息

    // 初始化有LED的IO

    pinMode(LED_BUILTIN, OUTPUT);

    digitalWrite(LED_BUILTIN, HIGH);

    // 初始化blinker

    Blinker.begin(auth, ssid, pswd);

    Button1.attach(button1_callback); //绑定按键执行回调函数

}

void loop() {

    Blinker.run();  /*每次运行都会将设备收到的数据进行一次解析。
                    在使用WiFi接入时，该语句也负责保持网络连接*/
}
